<?php
/**
 * client curl
 * @package common_lib_client
 */
/**
 * client curl
 * @author pandajingjing
 * @package common_lib_client
 */
class client_curl{

	/**
	 * 客户端连接
	 * @var object
	 */
	private $_objResource=NULL;

	/**
	 * CURL信息
	 * @var array
	 */
	private $_arrInfo=array();
	
	/**
	 * 服务器返回信息
	 * @var string
	 */
	private $_strContent='';

	/**
	 * 构造函数
	 * @param string $p_strURL
	 */
	function __construct($p_strURL=''){
		$this->_objResource=curl_init($p_strURL);
		$this->setOption(CURLOPT_RETURNTRANSFER,true);
		$this->setOption(CURLOPT_CONNECTTIMEOUT,get_config('connection_timeout','client'));
		$this->setOption(CURLOPT_HTTPHEADER, array('Content-type:text/xml; charset='.get_config('charset')));
		$this->setTimeOut(get_config('execute_timeout','client'));
	}

	/**
	 * 析构函数
	 */
	function __destruct(){
		curl_close($this->_objResource);
	}

	/**
	 * 设置选项
	 * @param int $p_intName
	 * @param mix $p_mixValue
	 * @return true/false
	 */
	function setOption($p_intName,$p_mixValue){
		return curl_setopt($this->_objResource,$p_intName,$p_mixValue);
	}

	/**
	 * 设置要访问的URL
	 * @param string $p_strURL
	 * @return true/false
	 */
	function setURL($p_strURL){
		return $this->setOption(CURLOPT_URL,$p_strURL);
	}

	/**
	 * 设置超时时间
	 * @param int $p_intTime
	 * @return true/false
	 */
	function setTimeOut($p_intTime){
		return $this->setOption(CURLOPT_TIMEOUT,$p_intTime);
	}
	
	/**
	 * 设置何种方式提交数据
	 * @param boolean $p_bolPost
	 * @return true/false
	 */
	function setPost($p_bolPost=true){
		return $this->setOption(CURLOPT_POST,$p_bolPost);
	}
	
	/**
	 * 设置Post参数
	 * @param array $p_arrParams
	 * @return true/false
	 */
	function setPostParams($p_arrParams){
		return $this->setOption(CURLOPT_POSTFIELDS,$p_arrParams);
	}

	/**
	 * 发送请求
	 * @return true/false
	 */
	function executeURL(){
		$mixResult=curl_exec($this->_objResource);
		if(false===$mixResult){
			return false;
		}else{
			$this->_arrInfo=curl_getinfo($this->_objResource);
			$this->_strContent=$mixResult;
			if(200==$this->_arrInfo['http_code']){
				return true;
			}else{
				return false;
			}
		}
	}
	
	/**
	 * 获取服务端返回信息
	 * @return string
	 */
	function getContent(){
		return $this->_strContent;
	}

	/**
	 * 得到版本信息
	 * @param int $p_intAge
	 * @return array
	 */
	function getVersion($p_intAge=0){
		return curl_version($p_intAge);
	}

	/**
	 * 得到CURL信息
	 * @return array
	 */
	function getInfo(){
		if(empty($this->_arrInfo)){
			$this->_arrInfo=curl_getinfo($this->_objResource);
		}
		return $this->_arrInfo;
	}

	/**
	 * 得到错误编号
	 * @return int
	 */
	function getErrNo(){
		return curl_errno($this->_objResource);
	}

	/**
	 * 得到错误信息
	 * @return string
	 */
	function getErrMsg(){
		return curl_error($this->_objResource);
	}
}